package org.jsshbroadcast.thread;

import org.jsshbroadcast.jsbException.*;
import org.jsshbroadcast.ui.IUsuario;
import org.jsshbroadcast.ssh.ClasseSSH;

/**
 *
 * @author Eduardo Folly
 */
public class ClasseThreadSSH implements Runnable {

    private IUsuario iu;
    private String usuario;
    private String senha;
    private String servidor;
    private int porta;
    private String comando;

    public ClasseThreadSSH(IUsuario ret, String user, String password, String serv, int port, String command) {
        iu = ret;
        usuario = user;
        senha = password;
        servidor = serv;
        porta = port;
        comando = command;
    }

    public void run() {
        String msg = "";
        String srv = usuario + "@" + servidor + ":" + porta;

        try {
            ClasseSSH ec = new ClasseSSH(usuario, senha, servidor, porta);

            msg = "Conectando em " + srv;
            iu.MostraMensagem(msg);

            // Conectar
            ec.conectar();
            msg = "Conectado a " + srv;
            iu.MostraMensagem(msg);
            iu.setIncrementaProgresso(1);

            // Resposta
            msg = "Resposta de " + srv + "\n";
            String aux = ec.executar(comando);
            iu.MostraMensagem(msg + aux);
            iu.setIncrementaProgresso(1);

            // Desconectar
            ec.desconectar();
            iu.setIncrementaProgresso(1);
            msg = "Desconectado de " + srv;
            iu.MostraMensagem(msg);

        } catch (SSHExitStatusException ee) {
            msg = "ERRO " + "(" + srv + ") - " + ee.getMessage();
            iu.MostraMensagem(msg);
            iu.setIncrementaProgresso(3);

        } catch (Exception e) {
            msg = "ERRO (" + srv + ") - " + e.toString();
            iu.MostraMensagem(msg);
            iu.setIncrementaProgresso(3);
        }
    }
}
